home *** CD-ROM | disk | FTP | other *** search
/ CD-ROM Data 2002 May / CD Rom Data Mayıs 2002.iso / Freeware / Blitz Basic / data1.cab / Support / help / samples / starsystem.bb < prev    next >
Encoding:
Text File  |  2002-04-10  |  1.8 KB  |  96 lines

  1. ;star system demo
  2. ;written by Ed Upton
  3. ;30-07-2000
  4.  
  5. ;NOTE YOU MAY WANT TO RUN THIS DEMO WITH DEBUG ENABLED
  6.  
  7. ;star system structure
  8. Type sysa
  9.  Field radius
  10.  Field angle
  11.  Field r
  12.  Field g
  13.  Field b
  14.  Field size
  15.  Field speed
  16. End Type
  17.  
  18. Type moons
  19.  Field radius
  20.  Field angle
  21.  Field size
  22.  Field speed
  23.  Field orbit
  24. End Type
  25.  
  26. n=0
  27.  
  28. ;set up 640 x 480 graphics screen, double buffered
  29. Graphics 640,480
  30. SetBuffer BackBuffer()
  31.  
  32. ClsColor 0,0,0
  33. ;call setup routine to make star system
  34. Setup()
  35.  
  36. ;main routine
  37. While Not KeyDown(1)
  38.  Cls
  39.  update()
  40.  Flip
  41. Wend
  42. End
  43.  
  44. ;function declerations follow this
  45.  
  46. ;sets up all those loverly planets
  47. Function Setup()
  48.  
  49.  startrad=85
  50.  
  51.  For n=1 To 10
  52.   planet.sysa =New sysa
  53.   planet\radius =startrad
  54.   planet\angle =Rnd(65535)
  55.   planet\r =Rnd(255)
  56.   planet\g =Rnd(255)
  57.   planet\b =Rnd(255)
  58.   planet\size =Rnd(10)+5
  59.   planet\speed =Rnd(2)+1
  60.   startrad=startrad+(Rnd(20)+25)
  61.  Next
  62.  
  63.  For n=1 To 10
  64.   moon.moons =New moons
  65.   moon\radius =Rnd(10)+15
  66.   moon\angle =Rnd(65535)
  67.   moon\size =Rnd(5)+3
  68.   moon\speed =Rnd(2)+1
  69.   moon\orbit=Rnd(10)+1
  70.  Next 
  71. End Function
  72.  
  73. ;updates all those loverly planets and moons
  74. Function update()
  75.  Color 255,255,255
  76.  Oval 320,240,20,20
  77.  cp=1
  78.  For planet.sysa =Each sysa
  79.   pax=320+Cos((2*planet\angle)*Pi/360)*planet\radius
  80.   pay=240+Sin((2*planet\angle)*Pi/360)*planet\radius
  81.   Color planet\r,planet\g,planet\b
  82.   hr=planet\size/3
  83.   Oval pax-hr,pay-hr,planet\size,planet\size
  84.   For moon.moons =Each moons
  85.    If moon\orbit=cp
  86.     max=pax+Cos((2*moon\angle)*Pi/360)*moon\radius
  87.     may=pay+Sin((2*moon\angle)*Pi/360)*moon\radius
  88.     Color 150,150,150
  89.     Oval max,may,moon\size,moon\size
  90.     moon\angle=moon\angle+(moon\speed*182)
  91.    EndIf
  92.   Next
  93.   planet\angle=planet\angle+(planet\speed*182)
  94.   cp=cp+1
  95.  Next
  96. End Function